package com.pad.filelibrary.utils;

import android.graphics.Bitmap;
import android.graphics.Matrix;

public class BitmapUitls {
    /**
     * 按指定百分比压缩 Bitmap 的宽高
     * @param sourceBitmap 原始的 Bitmap 对象
     * @param compressPercent 宽高的缩放百分比，例如 0.5 表示缩小为原来的 50%
     * @return 缩放后的 Bitmap 对象
     */
    public static Bitmap compressBitmapByPercent(Bitmap sourceBitmap, float compressPercent) {
        if (sourceBitmap == null) {
            return null;
        }

        // 获取原始 Bitmap 的宽度和高度
        int originalWidth = sourceBitmap.getWidth();
        int originalHeight = sourceBitmap.getHeight();

        // 计算缩放后的宽度和高度
        int newWidth = (int) (originalWidth * compressPercent);
        int newHeight = (int) (originalHeight * compressPercent);

        // 创建缩放矩阵
        Matrix matrix = new Matrix();
        matrix.postScale(compressPercent, compressPercent);

        // 生成缩放后的 Bitmap
        Bitmap scaledBitmap = Bitmap.createBitmap(sourceBitmap, 0, 0, originalWidth, originalHeight, matrix, true);

        // 释放原始 Bitmap 的资源
        if (sourceBitmap != scaledBitmap && !sourceBitmap.isRecycled()) {
            sourceBitmap.recycle();
        }

        return scaledBitmap;
    }
}
